<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Using Recovery on Journaling Filesystems</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Berkeley DB Programmer's Reference Guide" />
    <link rel="up" href="transapp.html" title="Chapter 12.  Berkeley DB Transactional Data Store Applications" />
    <link rel="prev" href="transapp_hotfail.html" title="Hot failover" />
    <link rel="next" href="transapp_filesys.html" title="Recovery and filesystem operations" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 12.1.6.2</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Using Recovery on Journaling Filesystems</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="transapp_hotfail.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 12.  Berkeley DB Transactional Data Store Applications </th>
          <td width="20%" align="right"> <a accesskey="n" href="transapp_filesys.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="transapp_journal"></a>Using Recovery on Journaling Filesystems</h2>
          </div>
        </div>
      </div>
      <p>
        In some cases, the use of meta-data only journaling file
        systems can lead to log file corruption. The window of
        vulnerability is quite small, but if the operating system
        experiences an unclean shutdown while Berkeley DB is creating
        a new log file, it is possible that upon file system recovery,
        the system will be in a state where the log file has been
        created, but its own meta-data has not. 
    </p>
      <p>
        When a log file is corrupted to this degree, normal
        recovery can fail and your application may be unable to open
        your environment. Instead, an error something like this is
        issued when you attempt to run normal recovery on environment
        open: 
    </p>
      <pre class="programlisting">    Ignoring log file: /var/dblog/log.0000000074: magic number 
    6c73732f, not 40988
    Invalid log file: log.0000000074: Invalid argument
    PANIC: Invalid argument
    process-private: unable to find environment
    txn_checkpoint interface requires an environment configured for 
    the transaction subsystem  </pre>
      <p> 
        In this case, it may be possible to successfully recover
        the environment by ignoring the log file that was being
        created — to do this, rename the log file with the
        highest number to a temporary name:
    </p>
      <pre class="programlisting"> mv DBHOME/log.000000XXX my-temporary-log-file  </pre>
      <p> 
        and try running normal environment recovery again. If
        recovery is successful, and your application is able to open
        the environment, then you can delete the log file that you
        renamed.
    </p>
      <p> 
        If recovery is not successful, then you must perform a
        catastrophic recovery from a previous backup. 
    </p>
      <p> 
        This situation has been shown to occur when using ext3 in
        writeback mode, but other journaling filesystems could exhibit
        similar behavior.
    </p>
      <p>
        To be absolutely certain of your application's ability to
        recover your environment in the event of a system crash,
        either use non-journaling filesystems, or use a journaling
        filesystem in a safe (albeit slower) configuration, such as
        ext3 in ordered mode. 
    </p>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="transapp_hotfail.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="transapp.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="transapp_filesys.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Hot failover </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Recovery and filesystem operations</td>
        </tr>
      </table>
    </div>
  </body>
</html>
